package jp.co.dailyReport.staff.action;

import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;

/**
 * org.apache.struts.action.ActionMappingに関連づけられた
 * org.apache.struts.action.ActionFormのサブクラスで
 * 社員情報を表します。
 */
public class StaffActionForm extends ActionForm {

	private static Logger log = Logger.getLogger(StaffActionForm.class);
	//社員ID
	protected int staffId;
	//社員名
	protected String name;
	//ユーザID
	protected String usr;
	//パスワード
	protected String passwd;
	//雇用形態
	protected int employmentSystem;
	//権限
	protected int position;
	//単価
	protected int targetUnitPrice;
	//削除フラグ
	protected boolean delFlg;
	//更新日
	protected Calendar upDay;
	//雇用形態名の配列
	public static final String[] STAFF_EMPLOYMENTSYSTEM = {"ｱﾙﾊﾞｲﾄ", "外注", "社員"};
	//雇用形態IDの配列
	public static final String[] STAFF_EMPLOYMENTSYSTEM_ID = {"0","1", "2"};
	//権限名の配列
	public static final String[] STAFF_POSITION = {"一般ﾕｰｻﾞ", "管理職ﾕｰｻﾞ", "ｼｽﾃﾑ管理ﾕｰｻﾞ"};
	//権限IDの配列
	public static final String[] STAFF_POSITION_ID = {"0","1", "2"};

	/**
	 * 社員IDを設定します。
	 * 
	 * @param staffId 社員ID
	 */
	public void setStaffId(int staffId) {
		this.staffId = staffId;
	}

	/**
	 * 社員IDを取得します。
	 * 
	 * @return staffId
	 */
	public int getStaffId() {
		return staffId;
	}

	/**
	 * 社員名を設定します。
	 * 
	 * @param name 社員名
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 社員名を取得します。
	 * 
	 * @return name
	 */
	public String getName() {
		return name;
	}

	/**
	 * ユーザIDを設定します。
	 * 
	 * @param usr ユーザID
	 */
	public void setUsr(String usr) {
		this.usr = usr;
	}

	/**
	 * ユーザIDを取得します。
	 * 
	 * @return usr
	 */
	public String getUsr() {
		return usr;
	}

	/**
	 * パスワードを設定します。
	 * 
	 * @param passwd パスワード
	 */
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}

	/**
	 * パスワードを取得します。
	 * 
	 * @return passwd
	 */
    public String getPasswd() {
        return passwd;
    }

	/**
	 * 雇用形態IDを設定します。
	 * 
	 * @param employmentSystem 雇用形態ID
	 */
	public void setEmploymentSystem(int employmentSystem) {
		this.employmentSystem = employmentSystem;
	}

	/**
	 * 雇用形態IDを取得します。
	 * 
	 * @return employmentSystem
	 */
	public int getEmploymentSystem() {
		return employmentSystem;
	}

	/**
	 * 設定された雇用形態IDに対応した
	 * 雇用形態名を取得します。
	 * 
	 * @return STAFF_EMPLOYMENTSYSTEM
	 */
	public String getEmploymentSystemName() {
		return STAFF_EMPLOYMENTSYSTEM[employmentSystem];
	}

	/**
	 * 全ての雇用形態名を取得します。
	 * 
	 * @return STAFF_EMPLOYMENTSYSTEM
	 */
	public String[] getEmploymentSystemNames() {
		return STAFF_EMPLOYMENTSYSTEM;
	}

	/**
	 * 全ての雇用形態IDを取得します。
	 * 
	 * @return employmentSystem
	 */
	public String[] getEmploymentSystemId() {
		return STAFF_EMPLOYMENTSYSTEM_ID;
	}

	/**
	 * 権限IDを設定します。
	 * 
	 * @param position 権限ID
	 */
	public void setPosition(int position) {
		this.position = position;
	}

	/**
	 * 権限IDを取得します。
	 * 
	 * @return position
	 */
	public int getPosition() {
		return position;
	}

	/**
	 * 設定された権限IDに対応した
	 * 権限名を取得します。
	 * 
	 * @return STAFF_POSITION
	 */
	public String getPositionName() {
		return STAFF_POSITION[position];
	}

	/**
	 * 全ての権限名を取得します。
	 * 
	 * @return STAFF_POSITION
	 */
	public String[] getPositionNames() {
		return STAFF_POSITION;
	}

	/**
	 * 全ての権限IDを取得します。
	 * 
	 * @return STAFF_POSITION_ID
	 */
	public String[] getPositionId() {
		return STAFF_POSITION_ID;
	}

	/**
	 * 単価を設定します。
	 * 
	 * @param targetUnitPrice 単価
	 */
    public void setTargetUnitPrice(int targetUnitPrice) {
		this.targetUnitPrice = targetUnitPrice;
	}

	/**
	 * 単価を取得します。
	 * 
	 * @return targetUnitPrice
	 */
	public int getTargetUnitPrice() {
		return targetUnitPrice;
	}

	/**
	 * 削除フラグを設定します。
	 * 
	 * @param delFlg 削除フラグ
	 */
	public void setDelFlg(boolean delFlg) {
		this.delFlg = delFlg;
	}

	/**
	 * 削除フラグを取得します。
	 * 
	 * @return delFlg
	 */
	public boolean isDelFlg() {
		return delFlg;
	}

	/**
	 * 更新日を設定します。
	 * 
	 * @param upDay 更新日
	 */
	public void setUpDay(Calendar upDay) {
		this.upDay = upDay;
	}

	/**
	 * 更新日を取得します。
	 * 
	 * @return upDay
	 */
	public Calendar getUpDay() {
		return upDay;
	}

	/**
	 * 名前がnullまたは長さ0の場合、
	 * ユーザIDがnullまたは長さ0の場合、
	 * パスワードがnullまたは長さ0の場合、
	 * ActionErrorsオブジェクトを返します。
	 * 
	 * @param mapping このインスタンスを選択するために用いられたマッピング
	 * @param request 処理しているServletリクエスト
	 * @return ActionErrorsオブジェクト
	 */
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		if(name == null || name.length() == 0) 
			errors.add("name", new ActionError("errors.name.required"));
		if(usr == null || usr.length() == 0) 
			errors.add("usr", new ActionError("errors.usr.required"));
		if(passwd == null || passwd.length() == 0) 
			errors.add("passwd", new ActionError("errors.passwd.required"));
		return errors;
	}
}